计算机网络之网络层- 互联网控制报文协议(ICMP) 您所在的位置:网站首页 spf 计算机网络 计算机网络之网络层- 互联网控制报文协议(ICMP)

计算机网络之网络层- 互联网控制报文协议(ICMP)

2023-03-23 23:48| 来源: 网络整理| 查看: 265

互联网控制报文协议(Internet Control Message Protocol , ICMP): 在主机或路由器间实现差错报告、 信息探测。

ICMP报文格式:

计算机网络之网络层- 互联网控制报文协议(ICMP)_数据

ICMP报文分类:

1. 差错报告报文1.1. 终点不可达

当路由器发送的数据报不能发送到指定目的地时,或者说当路由器不能够给数据报找到路由或主机不能够交付数据报时,就丢弃这个数据报,然后向发送数据报的源主机设备发回一个终点不可达数据报文。

计算机网络之网络层- 互联网控制报文协议(ICMP)_字段_02

举例说明:主机A给主机B发送一个邮件,在网络中传输时中间可能要经过很多台路由器,主机A先把这个邮件发送给路由R1,路由R1收到这个邮件后,此时路由R1发生了故障,它不知道这封邮件下一步该发给哪个路由设备或者哪一台主机设备,也就是说这封邮件无法发送到目的地主机B,这时路由R1会把这个数据报丢弃并向主机A发回一个终点不可达的数据报文。

终点不可达数据报文格式:

计算机网络之网络层- 互联网控制报文协议(ICMP)_数据_03

报文的类型值:3。

代码标号:0 - 15,表示引发终点不可达错误类型的具体错误原因有16种可能。

标识符和序列号:用0来填充。

1.2. 源点抑制;

由于IP协议是面向无连接的,没有流量控制机制,数据在传输过程中是非常容易造成拥塞的现象。

而ICMP源点抑制报文就是给IP提供一种流量监控的机制,因为ICMP源点抑制机制并不能控制流量的大小,但是能根据流量的使用情况,给源主机提供一些建议。这个报文的作用就是通知数据报在拥塞时被丢弃了,另外还会警告源主机流量出现了拥塞的情况,然后源主机根据反馈的ICMP源点抑制报文信息作出处理,至于源主机怎么就不管它的事了。

举例说明:主机A给主机B传输一个视频数据,主机A这边传输的非常快,而主机B这边在接收的非常慢的话,这可能会导致数据在传输过程中都拥塞在某一台路由设备上,假设拥塞在路由设备A,如果主机B接收数据一直比较慢的话,路由设备A解决不了拥塞问题,会给源主机发送一个源点抑制报文反馈给源主机,目的是告诉源主机数据报造成拥塞了,再发送就会丢弃数据报了,另一个是警告源主机放慢发送数据的速度。另外需要注意的是如果路由设备A一直都是拥塞的话,就会一直给源主机发送ICMP源点抑制报文,直到路由设备A不再拥塞,也就不向源主机发送ICMP源点抑制报文,源主机A又会恢复原来的发送数据的速度。

计算机网络之网络层- 互联网控制报文协议(ICMP)_计算机网络_04

报文的类型值:4。

代码标号:0。

未使用的部分:全部以0填充。  

1.3. 时间超时;

ICMP差错报告报文主要在以下几种情况中,会发送ICMP超时报文:

A. 当路由器接收到的数据报的TTL生命周期字段值为0时,路由器会把该数据报丢弃掉,并向源主机发回一个ICMP超时报文。

B. 另外,当目标主机在规定时间内没有收到所有的数据分片时,会把已经收到的所有数据分片丢弃,并向源主机发回一个ICMP超时报文。在超时报文中,代码0只能给路由器使用,表示生存周期字段值为0,代码1只能给目的主机使用,它表示在规定的时间内,目的主机没有收到所有的数据分片。

计算机网络之网络层- 互联网控制报文协议(ICMP)_回送_05

举例说明:当主机A给主机B发送一个数据报文时,该数据报文在网络中会有一个TTL生存时间字段,就是数据报文每经过一台路由器,TTL字段值就会减1,当路由器收到数据报文后TTL字段值减1后为0的话,那么该路由器就会把数据报丢弃并向主机A发回一个ICMP超时报文,这种机制有效的防止了路由环路,也就是解决了数据报在路由器之间一直转圈的问题。

计算机网络之网络层- 互联网控制报文协议(ICMP)_回送_06

报文的类型值:11。

代码标号:0或1。

标识符和序列号:全部填充为0。

1.4. 参数问题;

当数据报在因特网上传送时,在其首部中出现的任何二义性或者首部字段值被修改都可能会产生非常严重的问题。如果路由器或目的主机发现了这种二义性,或在数据报的某个字段中缺少某个值,就丢弃这个数据报,并回送参数问题报文。

计算机网络之网络层- 互联网控制报文协议(ICMP)_计算机网络_07

举例说明:主机A给主机B发送一个数据报文,该数据报文在网络传输过程中必须要封装成IP数据报文形式传输,其中就包括了IP首部部分,当这个IP数据报文在传输到R1路由器时IP首部的字段值正好被 修改了(code值为0),因为前面我们说过数据报文在网络传输过程中是不允许被修改的,如果被修改或者发生错误的话,这都是很严重的问题,如果路由器R1检测到这个IP数据报文的IP首部被修改的话,R1路由器会将该数据报文丢弃并向主机A发送一个ICMP参数问题报文。如果在传输过程中该数据报文要求加上可选字段,也就是code值要求为1,但是R1路由器检测到该数据报文的code值不是1没有加可选字段,同样会发送一个ICMP参数问题报告报文。

计算机网络之网络层- 互联网控制报文协议(ICMP)_计算机网络_08

报文的类型值:12。

代码标号:0或1 ,如果代码值为0表示数据报文的首部的字段值被修改 ,如果代码值为1表示该数据报文在网络中传输要求加上可选字段,实际上没有加上可选字段。

指针:表示指针会指向出错的部分,比如:某个字段值是错误的或者有问题,指针就会指向该字段。

标识符和序列号:全部填充为0。

1.5. 路由重定向;

计算机网络之网络层- 互联网控制报文协议(ICMP)_计算机网络_09

举例说明:主机A给主机B发送数据,数据报文在网络传输过程中走的路线:主机A - R1 - R2 - R3 - R4 -主机B,当R3在接收到这个数据报时,R3会查看自己的路由表发现数据走R3并不是最优的路线,应该直接走R4才是最优的路线,所以这时候R3并不会把数据报丢弃,而是把已经发过来的数据报通过这条路径发送给R4,R4再发给主机B。同时R3还会发送一个ICMP改变路由的报文给发送数据的主机A,告诉主机A最优路线是直接发送给R4,而不是发送给R3,也就是说,下次主机A发送数据的路线是这样的:主机A - R1 -R2 - R4 -主机B。

计算机网络之网络层- 互联网控制报文协议(ICMP)_回送_10

报文的类型值:5。

代码标号:0、1、2、3 。0代表对某一个特定网络路由进行改变;1代表对特定某一主机进行改变 ;2代表对于指定的服务类型和网络路由进行改变 ;3代表对于指定的服务类型和主机路由进行改变。

目的路由器的IP地址:最优路线的路由器IP地址。

2. 询问报文2.1. 回声请求/应答;

报文的类型值:8代表回送消息;0代表回送响应消息。

代码标号:0。

校验码:16位数据(从ICMP类型开始)的反码和再取反而得。为计算校验码,校验码域应该为零,这些零在 以后会被校验码取代。

标识符:如果代码=0,帮助匹配回送和回送响应的代码可以为0。

序列码:如果代码=0,帮助匹配回送和回送响应的序列码可以为0。

说明:回送消息中接收到的消息应该在回送响应消息中返回。标识符和序列码由回送发送者使用帮助匹配回送请求的响应。

代码: 从主机或网关接收0。

2.2. 时间戳请求/应答;

报文的类型值:11。

代码标号:0  传送超时;1 分段级装超时。

校验码:16位数据(从ICMP类型开始)的反码和再取反而得。为计算校验码,校验码域应该为零,这些零在以后会被校验码取代。

Internet包头+64位源数据报数据:Internet包头加上源数据的头64位而得。此数据用于主机匹配信息到相应的进程。如果高层协议使用端口号,应该假设其在源数据的头64个字节之中。

说明:如果网关在处理数据报时发现生存周期域为零,此数据报必须抛弃,网关同时必须通过超时信息通知源主机。如果主机在组装分段的数据报时因为丢失段未能在规定时间内组装数据,此数据报必须抛弃,网关发送超时信息。如果段零不可用则不用发送超时信息。代码0由网关发送,代码1由主机发送。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有